package config;

import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.apache.commons.dbutils.QueryRunner;
import org.springframework.context.annotation.*;

import javax.sql.DataSource;
import java.beans.PropertyVetoException;

/**
 * 该类是一个配置类，它的作用和bean.xml是一样的(注解和xml的选择建议是:来自jar包的用xml配置加载实例，自定义的类用注解的方式,因为方便迅速)
 * spring中的新注解
 * Configuration
 *      作用：指定当前类是一个配置类
 *      细节：当配置类作为AnnotationConfigApplicationContext对象创建参数时(ComponentScans)，该注解可省略
 * ComponentScans
 *      作用：用于通过注解指定spring在创建容器时要扫描的包
 *      属性：
 *          value:它和basePackages作用一样，指定创建容器时要扫描的包。
 *          取代：<context:component-scan base-package="com.citywy"></context:component-scan>
 * Bean:
 *      作用：用于把当前方法的返回值作为bean对象存入spring的ioc容器中
 *      属性：
 *          name:
 *              用于指定bean的id。不写时默认值是当前方法名称
 *          细节：
 *              当我们使用注解配置方法时，如果方法有参数，spring框架会去容器中查找有没有可用的bean对象。
 *              查找的方式和Autowired注解是一样的
 * Import:
 *      作用: 用于导入其它的配置类
 *      属性：当我们使用Import的注解之后,有Import注解的类就是父配置类,而导入的都是子配置类
 *
 * PropertySource
 *      作用: 用于指定properties文件的位置
 *      属性:
 *           value:指定文件的名称和位置
 *           关键字：classpath表示类路径下
 */
@Configuration
@ComponentScan(basePackages = "com.citywy")
@Import(JdbcConfig.class)
@PropertySource("classpath:jdbcConfig.properties")
public class SpringConfiguration {

}
